<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title> 声明提升 </title>
</head>
<body>
<script>
    // 声明提升与作用域有关系
    // 全局作用域内：
//        声明提升：创建变量（函数）的声明(过程)会提升至该作用域的最前方
//            但是， 赋值的位置是不变的
    // 局部作用域：
    //    声明提升：创建变量（函数）的声明(过程)会提升至该作用域的最前方
    //            但是， 赋值的位置是不变的
    // 局部和全局的不同：
//    局部作用域可使用全局作用域的变量或函数； 反过来不行；

    var a = 10;  // 创建变量a， 给a赋值 === var a; a = 10


    console.log(str)  // undefined
    show()
//    show1()  // 报错
    // .... 多行代码
//    console.log('1234567')
//    console.log(1234567)
    // .... 多行代码
    var str = '这是字符串'

    function show(){
        console.log(hello)
        alert('第一个函数')
        console.log(str)
        var hello = 'Javascript'
    }
    console.log(hello)



    var show1 = function(){
        alert('第二种创建函数的方法')
    }
</script>
</body>
</html>